#include <fstream>
#include <vector>
#include <iomanip>

using std::vector;

struct point_t
{
   double x, y;

   point_t() : x(0), y(0)
   {
   }

   point_t(double X, double Y) : x(X), y(Y)
   {
   }
};


double vector_multiply(const point_t& a, const point_t& b)
{
   return a.x * b.y - a.y * b.x;
}

struct polygon_t
{
private:
   vector<point_t> p_;
   
public:
   polygon_t(vector<point_t>& points) : p_(points)
   {
      p_ = points;
   }

   double area() const
   {
      double s = 0;
      for (vector<point_t>::size_type i = 1; i != p_.size(); ++i)
      {
         s += vector_multiply(p_[i], p_[i - 1]) / 2;
      }
      s += vector_multiply(p_[0], p_[p_.size() - 1]) / 2;
      return std::abs(s);
   }

};

int main()
{
   std::ifstream in("in.txt");
   std::ofstream out("out.txt");

   vector<point_t> points;
   double x, y;
   while (in >> x >> y)
   {
      points.push_back(point_t(x, y));
   }

   polygon_t polygon(points);

   out.precision(20);
   out << polygon.area();
   
   in.close();
   out.close();
   return 0;
}